const app = getApp()

Page({
  data: {
    id: '',
    address: {
      name: '',
      phone: '',
      region: '',
      detail: '',
      isDefault: false
    },
    region: ['', '', '']
  },

  onLoad(options) {
    if (options.id) {
      this.setData({ id: options.id })
      this.loadAddress(options.id)
    }
  },

  // 加载地址信息
  async loadAddress(id) {
    try {
      const db = wx.cloud.database()
      const { data } = await db.collection('addresses').doc(id).get()
      const region = data.region ? data.region.split(' ') : ['', '', '']
      this.setData({ 
        address: data,
        region
      })
    } catch (error) {
      console.error('加载地址信息失败：', error)
    }
  },

  // 输入框变化
  onInput(e) {
    const { field } = e.currentTarget.dataset
    this.setData({
      [`address.${field}`]: e.detail.value
    })
  },

  // 地区选择改变
  onRegionChange(e) {
    const region = e.detail.value
    this.setData({
      region,
      'address.region': region.join(' ')
    })
  },

  // 设置默认地址
  onSwitchChange(e) {
    this.setData({
      'address.isDefault': e.detail.value
    })
  },

  // 保存地址
  async saveAddress() {
    const { id, address } = this.data
    
    // 表单验证
    if (!address.name) {
      wx.showToast({
        title: '请输入收货人姓名',
        icon: 'none'
      })
      return
    }
    if (!address.phone) {
      wx.showToast({
        title: '请输入手机号码',
        icon: 'none'
      })
      return
    }
    if (!address.region) {
      wx.showToast({
        title: '请选择所在地区',
        icon: 'none'
      })
      return
    }
    if (!address.detail) {
      wx.showToast({
        title: '请输入详细地址',
        icon: 'none'
      })
      return
    }

    try {
      const db = wx.cloud.database()
      
      if (address.isDefault) {
        // 将其他地址设为非默认
        await db.collection('addresses')
          .where({
            userId: app.globalData.openid
          })
          .update({
            data: {
              isDefault: false
            }
          })
      }

      if (id) {
        // 更新地址
        await db.collection('addresses').doc(id)
          .update({
            data: {
              ...address,
              updateTime: db.serverDate()
            }
          })
      } else {
        // 新增地址
        await db.collection('addresses').add({
          data: {
            ...address,
            userId: app.globalData.openid,
            createTime: db.serverDate(),
            updateTime: db.serverDate()
          }
        })
      }

      wx.showToast({
        title: '保存成功'
      })

      setTimeout(() => {
        wx.navigateBack()
      }, 1500)
    } catch (error) {
      console.error('保存地址失败：', error)
      wx.showToast({
        title: '保存失败',
        icon: 'none'
      })
    }
  }
}) 